package com.mi.system.vo;

import com.mi.common.core.util.TreeNode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * Menu VO
 *
 * @author jin_huaquan
 * @version 1.0
 * @date 2021/11/3 13:37
 */
@ApiModel(value = "MenuVO对象", description = "菜单信息")
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class MenuVO extends TreeNode implements Serializable {

    @ApiModelProperty(value = "菜单标题", required = true)
    private String name;

    @ApiModelProperty(value = "路由路径")
    private String path;

    @ApiModelProperty(value = "菜单权限")
    private String permission;

    @ApiModelProperty("菜单图标")
    private String icon;

    @ApiModelProperty(value = "模块组件")
    private String component;

    @ApiModelProperty(value = "排序值", required = true)
    private Integer sort;

    @ApiModelProperty(value = "是否缓存该页面 @enum MenuKeepAlive[0(否),1(是)]", required = true)
    private Integer keepAlive;

    @ApiModelProperty(value = "菜单类型 @enum MenuType[0(目录),1(页面),2(按钮)]", required = true)
    private Integer type;

    @ApiModelProperty(value = "是否隐藏 @enum MenuHidden[0(否),1(是)]", required = true)
    private Integer hidden;

    @ApiModelProperty(value = "是否外链 @enum MenuTarget[0(否),1(是)]", required = true)
    private Integer target;

    @ApiModelProperty(value = "是否启用 @enum MenuEnabled[0(否),1(是)]", required = true)
    private Integer enabled;

    @ApiModelProperty(value = "创建时间", required = true)
    private LocalDateTime createTime;
}
